package com.br.negocio.controller;

import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.br.negocio.dao.VendaDAO;
import com.br.negocio.vo.VendaVO;

@Service("controllerVenda")
public class ControllerVenda {

	@Resource
	private VendaDAO vendaDAO;
	
	public void atualizarVenda(VendaVO vendaVO) {
		
		if (vendaVO == null) {
			throw new IllegalArgumentException("Um venda valido e obrigatorio.");
		}
		
		if (vendaVO.getClienteVO() == null) {
			throw new IllegalArgumentException("Um pais valido e obrigatorio.");
		}
		
		if (vendaVO.getClienteVO().getCodigo() == 0) {
			throw new IllegalArgumentException("e necesserio selecionar um cliente para o venda.");
		}
		
		if ((!vendaDAO.validaDuplicado(vendaVO)) &&
			(vendaVO.getCodigo() == 0)) {
			throw new IllegalArgumentException("Este venda ja existe.");
		}

		if (vendaVO.getCodigo() == 0) {
			vendaVO.setDataCriacao(new Date());
			vendaVO.setDataAlteracao(new Date());
			vendaDAO.inserirVenda(vendaVO);
		} else {
			vendaVO.setDataAlteracao(new Date());
			vendaDAO.atualizarVenda(vendaVO);
		}
	}
	
	public void removerOrcamento(VendaVO vendaVO) {
		
		if (vendaVO == null) {
			throw new IllegalArgumentException("Uma venda valida e obrigatorio.");
		}
		
		if (vendaVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + vendaVO.getCodigo());
		}
		
		vendaDAO.inserirVenda(vendaVO);
	}

	public void removerVenda(VendaVO vendaVO) {
		
		if (vendaVO == null) {
			throw new IllegalArgumentException("Uma venda valida é obrigatório.");
		}
		
		if (vendaVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + vendaVO.getCodigo());
		}
		
		vendaDAO.removerVenda(vendaVO);
	}

	public VendaVO obterVenda(VendaVO vendaVO) {
		
		if (vendaVO == null) {
			throw new IllegalArgumentException("Um venda valida é obrigatório.");
		}

		return vendaDAO.obterVenda(vendaVO);
	}
	
	public VendaVO obterServico(VendaVO vendaVO) {
		
		if (vendaVO == null) {
			throw new IllegalArgumentException("Uma venda valida é necessario.");
		}

		return vendaDAO.obterVenda(vendaVO);
	}
	
	
	
	

	public List<VendaVO> obterListaVenda() {
		return vendaDAO.obterListaVenda();
	}
	
}